The use of a proxy as an intermediary between a client (i.e. a device requesting a service) and a server (i.e. a device providing the service) is known. Proxies can typically be used to implement several different networking functions, including any one or more of securing or capturing data samples of data traffic passing through such proxies, routing, load balancing and forwarding functions.
FIG. 1 illustrates a networking architecture comprising client 102, server backend 106 comprising servers 106a to 106c, proxy 104 and DNS server 108. Based on information retrieved from DNS server 108, requests or messages from client 102 for services from server backend 106 are directed to proxy 102. Proxy 102 thereafter transmits the received requests or messages to an appropriate server (106a to 106c) within server backend 106. Depending on the configuration of proxy 104, responses from servers 106a to 106c may first be received at proxy 102 and thereafter redirected to requesting client 102.
Proxy based configurations of the type illustrated in FIG. 1 have a finite processing capacity—which limits the number of clients and servers a proxy can simultaneously service. Additionally prior art configurations present limitations in terms of high availability—where “high availability” refers to the characteristic of a system to continue running and handling failures with minimum planned or unplanned down time.
There is accordingly a need for (i) a scalable cluster of proxies configured to route communications between clients and servers, without any single point of failure, (ii) efficient methods of configuring and scaling the cluster, (iii) natural resiliency of clusters, (iv) efficient scaling of such clusters, (v) configurability of such clusters to span multiple servers, multiple data racks and multiple data centers and (vi) to provide for switching between proxies in case of a proxy failure or between servers in case of failure of a server, rack or data center without loss of session information—thereby ensuring high availability and disaster recovery.